#ifndef IPC_H
#define IPC_H

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/sem.h>
#include <sys/msg.h>

extern key_t shm_key;
extern key_t sem_key;
extern int shm_id;
extern int sem_id;

typedef enum { TOBACCO, PAPER, MATCH } material_t;

typedef struct {
    material_t materials[2];
    int ready;
} shm_data_t;

extern shm_data_t *shm_data;

void sem_down(int sem_id);
void sem_up(int sem_id);

void init_ipc();
void cleanup_ipc();

#endif // IPC_H
